// 'use strict';
class MyClass {
  // constructor() {
  //   // this.fn = this.fn.bind(this); 将fn方法的this绑定为当前实例
  // }
  /*
   *   类中的所有代码都会在严格模式下执行
   *       严格模式下其中一个特点就是，函数的this不在是window，而是undefined
   *
   *   注意：
   *       在类中方法的this不是固定的
   *           以方法形式调用时，this就是当前的实例
   *           以函数形式调用，this是undefined
   *       在开发时，在有些场景下，我们希望方法中的this是固定的，不会因调用方式不同而改变
   *           如果遇到上述需求，可以使用箭头函数来定义类中的方法
   *           如果类中的方法是以箭头函数定义的，则方法中的this恒为当前实例，不会改变!!!!!!
   *
   * */

  // fn() {
  //   console.log("-->", this);//this不固定的
  // }

  fn = () => {
    console.log("-->", this); //this固定
  };
}

const mc = new MyClass();

const test = mc.fn;

mc.fn(); // mc
test(); // undefined

const fn2 = function () {
  console.log(this);
};

// fn2();
